package fr.jhaccoun.demenager_eco.utilisateur;

import org.apache.commons.lang.Validate;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;

public class UtilisateurDaoImpl implements UtilisateurDaoCustom {

	@Override
	public Utilisateur getCurrentUser() {

		Authentication auth = SecurityContextHolder.getContext().getAuthentication();
		if (auth == null) {
			return null;
		} else {
			Object principal = auth.getPrincipal();
			if (principal != null && principal.getClass().isAssignableFrom(Utilisateur.class)) {
				return (Utilisateur) principal; 
			}
		} 
		return null;
	}
	
	@Override
	public boolean isLogged() {
		return getCurrentUser()!=null;
	}
	
	@Override
	public void autoLogUser(Utilisateur utilisateur) {
		Validate.notNull(utilisateur);
		 
		UsernamePasswordAuthenticationToken newAuthentication = new UsernamePasswordAuthenticationToken(utilisateur,null,utilisateur.getAuthorities());
		newAuthentication.setDetails(utilisateur);
		SecurityContextHolder.getContext().setAuthentication(newAuthentication);
	}
}
